load("@rules_cc//cc:defs.bzl", "cc_library")

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "boost.fusion",
    hdrs = glob(
        [
            "include/**/*.hpp",
        ],
        exclude = glob([
            "include/boost/fusion/adapted/array/*_impl.hpp",
            "include/boost/fusion/**/detail/**/*.hpp",
            "include/boost/fusion/**/*_fwd.hpp",
        ]) + [
            "include/boost/fusion/adapted/boost_tuple/mpl/clear.hpp",
            "include/boost/fusion/container/generation/vector_tie.hpp",
            "include/boost/fusion/container/map/map_iterator.hpp",
            "include/boost/fusion/include/segmented_fold_until.hpp",
            "include/boost/fusion/include/vector_tie.hpp",
            "include/boost/fusion/support/segmented_fold_until.hpp",
        ],
    ),
    includes = ["include"],
    features = [
        "parse_headers",
    ],
    textual_hdrs = glob([
        "include/boost/fusion/adapted/array/*_impl.hpp",
        "include/boost/fusion/**/detail/**/*.hpp",
        "include/boost/fusion/**/*_fwd.hpp",
    ]) + [
        "include/boost/fusion/adapted/boost_tuple/mpl/clear.hpp",
        "include/boost/fusion/container/generation/vector_tie.hpp",
        "include/boost/fusion/container/map/map_iterator.hpp",
        "include/boost/fusion/include/segmented_fold_until.hpp",
        "include/boost/fusion/include/vector_tie.hpp",
        "include/boost/fusion/support/segmented_fold_until.hpp",
    ],
    deps = [
        "@boost.config",
        "@boost.container_hash",
        "@boost.core",
        "@boost.function_types",
        "@boost.functional",
        "@boost.mpl",
        "@boost.preprocessor",
        "@boost.static_assert",
        "@boost.tuple",
        "@boost.type_traits",
        "@boost.typeof",
        "@boost.utility",
    ],
)
